home *** CD-ROM | disk | FTP | other *** search
/ 17 Bit Software 3: The Continuation / 17-Bit_The_Continuation_Disc.iso / amigan / amigan 9 / automata / source / amsetup.mod < prev    next >
Encoding:
Modula Implementation  |  1994-01-27  |  8.2 KB  |  294 lines

  1. IMPLEMENTATION MODULE AMSetUp;
  2.  
  3. (*  AMSetUp prepares the screen for the Automata program.
  4.  
  5.     Version 2.2d    by Mike Dryja   March 1, 1987  *)
  6.     
  7. FROM SYSTEM     IMPORT BYTE, ADR, NULL;
  8. FROM Storage    IMPORT ALLOCATE;
  9. FROM Libraries  IMPORT OpenLibrary, CloseLibrary;
  10. FROM Intuition  IMPORT IntuitionName, IntuitionBase, Window, WindowFlags,
  11.                        IDCMPFlagSet, WindowFlagSet, IntuiMessagePtr,
  12.                CustomScreen, ScreenFlags, Screen, IDCMPFlags,
  13.                ScreenPtr, WindowPtr, NewWindow, IntuitionText,
  14.                        MenuEnabled, MenuFlagSet, Menu, MenuItem, ItemFlagSet,
  15.                ItemText, ItemEnabled, Gadget, StringInfo, GadgetFlags,
  16.                GadgetFlagSet, GadgetPtr, BorderPtr, Border,
  17.                IntuitionTextPtr, ActivationFlags, ActivationFlagSet,
  18.                RequesterFlags, RequesterFlagSet;
  19. FROM Gadgets    IMPORT HighComplement, RequestorGadget, StrGadget,
  20.                        BoolGadget;
  21. FROM GraphicsLibrary
  22.                 IMPORT GraphicsName, GraphicsBase, DrawingModeSet, Jam1,
  23.                Jam2;
  24. FROM Screens    IMPORT OpenScreen, NewScreen, CloseScreen;
  25. FROM Colors     IMPORT SetRGB4;
  26. FROM Ports      IMPORT MessagePtr;
  27. FROM Views      IMPORT ModeSet;
  28. FROM Windows    IMPORT OpenWindow, CloseWindow;
  29. FROM Requesters IMPORT InitRequester;
  30.     
  31. VAR
  32.   StringI : StringInfo;
  33.   StringText,
  34.   GadgetText2 : IntuitionTextPtr;
  35.   AuthorText : ARRAY[0..2] OF IntuitionTextPtr;
  36.   StringGadg,
  37.   AuthorGadg : GadgetPtr;
  38.   AText : ARRAY[0..2], [0..32] OF CHAR; 
  39.   OK : ARRAY[0..2] OF CHAR;
  40.   Blah : ARRAY[0..10] OF CHAR;
  41.   AVar,
  42.   GVar,
  43.   XYVar : ARRAY[0..9] OF INTEGER;
  44.   StringBorder,
  45.   AuthorBorder,
  46.   GadgetBorder : BorderPtr;
  47.   AMNewW1,
  48.   AMNewW2 : NewWindow;
  49.   AMNewS  : NewScreen;
  50.   ScreenName : ARRAY[0..29] OF CHAR;
  51.   AMItem : ARRAY[0..2] OF MenuItem;
  52.   AMItemText : ARRAY[0..2] OF IntuitionText;
  53.   AMText : ARRAY[0..2] OF ARRAY[0..20] OF CHAR;        
  54.   AMMenu : Menu;
  55.   AMMenuName : ARRAY[0..10] OF CHAR;
  56.     
  57. PROCEDURE InitScreen (VAR s : NewScreen) : ScreenPtr;
  58.     BEGIN
  59.       ScreenName := "Automata V1.0";
  60.       WITH s DO
  61.         LeftEdge := 0; TopEdge := 0;
  62.     Width := 320; Height := 200;
  63.     Depth := 2;
  64.     DetailPen := BYTE(0); BlockPen := BYTE(1);
  65.     ViewModes := CARDINAL (ModeSet {});
  66.     Type := CustomScreen;
  67.     Font := NULL;
  68.     DefaultTitle := ADR(ScreenName);
  69.     Gadgets := NULL;
  70.     CustomBitMap := NULL
  71.       END;
  72.       RETURN OpenScreen (s)
  73.     END InitScreen;
  74.   
  75.  PROCEDURE InitWindow1 (VAR w : NewWindow; s : ScreenPtr) : WindowPtr;
  76.     BEGIN
  77.       WITH w DO
  78.         LeftEdge := 0; TopEdge := 0; Width := 320; Height := 200;
  79.     DetailPen := BYTE (0);
  80.     BlockPen := BYTE (1);
  81.     Title := ADR(ScreenName);
  82.     Flags := WindowFlagSet {Activate, Borderless, BackDrop};
  83.         IDCMPFlags := IDCMPFlagSet {MenuPick, ReqClear};
  84.     Type := CustomScreen;
  85.     CheckMark := NULL;
  86.     FirstGadget := NULL;
  87.     Screen := s;
  88.     BitMap := NULL;
  89.     MinWidth := 10; MinHeight := 10; MaxWidth := 320; MaxHeight := 200;
  90.       END;
  91.       RETURN OpenWindow (w);
  92.     END InitWindow1;
  93.  
  94. PROCEDURE SetColors(s : ScreenPtr);
  95.   BEGIN
  96.     WITH s^ DO
  97.       SetRGB4 (VPort, 0, 0, 0, 0);  (* Black *)
  98.       SetRGB4 (VPort, 1, 15, 0, 0); (* Red *)
  99.       SetRGB4 (VPort, 2, 8, 15, 0); (* Light Green *)
  100.       SetRGB4 (VPort, 3, 6, 1, 15); (* Bright Blue *)
  101.     END;
  102.   END SetColors;
  103.             
  104. PROCEDURE InitGadg1();
  105.   BEGIN
  106.     NEW(StringReq);
  107.     InitRequester(StringReq^);
  108.     NEW(StringGadg);
  109.     WITH StringGadg^ DO
  110.       NextGadget := NULL;
  111.       LeftEdge := 54;
  112.       TopEdge := 4;
  113.       Width := 80;
  114.       Height := 10;
  115.       Flags := HighComplement + GadgetFlagSet{Selected};
  116.       Activation := ActivationFlagSet{EndGadget};
  117.       GadgetType := (RequestorGadget) + (StrGadget);
  118.       GadgetRender := NULL; SelectRender := NULL;
  119.       GadgetText := NULL; MutualExclude := 0;
  120.       SpecialInfo := ADR(StringI); GadgetID := 0;
  121.     END;
  122.     NewRule := "1234567890";
  123.     OldRule := "1234567890";
  124.     WITH StringI DO
  125.       Buffer := ADR(NewRule);
  126.       UndoBuffer := ADR(OldRule);
  127.       BufferPos := 0;
  128.       MaxChars := 11;
  129.       DispPos :=0;
  130.     END;
  131.     Blah := "Rule:";
  132.     NEW (StringText);
  133.     WITH StringText^ DO
  134.       FrontPen := BYTE(3);
  135.       BackPen := BYTE(2);
  136.       DrawMode := BYTE(DrawingModeSet{Jam2});
  137.       LeftEdge := 14; TopEdge := 4;
  138.       ITextFont := NULL; IText := ADR(Blah);
  139.       NextText := NULL;
  140.     END;
  141.     NEW(StringBorder);
  142.     XYVar[0] := 1;
  143.     XYVar[1] := 1;
  144.     XYVar[2] := 146;
  145.     XYVar[3] := 1;
  146.     XYVar[4] := 146;
  147.     XYVar[5] := 14;
  148.     XYVar[6] := 1;
  149.     XYVar[7] := 14;
  150.     XYVar[8] := 1;
  151.     XYVar[9] := 1;
  152.     WITH StringBorder^ DO
  153.       LeftEdge := 0; TopEdge := 0;
  154.       FrontPen := BYTE(3); BackPen := BYTE(2);
  155.       DrawMode := BYTE(DrawingModeSet{Jam2}); Count := BYTE(5);
  156.       XY := ADR(XYVar);
  157.       NextBorder := NULL;
  158.     END;
  159.     WITH StringReq^ DO
  160.       OlderRequest := NULL;
  161.       LeftEdge := 20;
  162.       TopEdge := 20;
  163.       Width := 148; Height := 16;
  164.       RelLeft := 0; RelTop := 0;
  165.       ReqGadget := StringGadg;
  166.       ReqText := StringText;
  167.       Flags := RequesterFlagSet{};
  168.       BackFill := BYTE(2);
  169.       ReqBorder := StringBorder;
  170.     END;
  171.   END InitGadg1;
  172.  
  173. PROCEDURE InitGadg2();
  174.   VAR
  175.     I : CARDINAL;
  176.   BEGIN
  177.     NEW(AuthorReq);
  178.     InitRequester(AuthorReq^);
  179.     NEW(AuthorGadg);
  180.     NEW(GadgetText2);
  181.     NEW(GadgetBorder);
  182.     WITH AuthorGadg^ DO
  183.       NextGadget := NULL;
  184.       LeftEdge := 190;
  185.       TopEdge := 55;
  186.       Width := 40;
  187.       Height := 20;
  188.       Flags := HighComplement;
  189.       Activation := ActivationFlagSet{EndGadget, RelVerify};
  190.       GadgetType := (RequestorGadget) + (BoolGadget);
  191.       GadgetRender := GadgetBorder;
  192.       SelectRender := NULL;
  193.       GadgetText := GadgetText2; MutualExclude := 0;
  194.       SpecialInfo := NULL; GadgetID := 0;
  195.     END;
  196.     OK := "OK";
  197.     WITH GadgetText2^ DO
  198.       FrontPen := BYTE(1);
  199.       BackPen := BYTE(2);
  200.       DrawMode := BYTE(DrawingModeSet{Jam2});
  201.       LeftEdge := 12; TopEdge := 6;
  202.       ITextFont := NULL; IText := ADR(OK);
  203.       NextText := NULL;
  204.     END;
  205.     NEW(AuthorBorder);
  206.     GVar[0] := 0; GVar[1] := 0;
  207.     GVar[2] := 39; GVar[3] := 0;
  208.     GVar[4] := 39; GVar[5] := 19;
  209.     GVar[6] := 0; GVar[7] := 19;
  210.     GVar[8] := 0; GVar[9] := 0;
  211.     AVar[0] := 1; AVar[1] := 1;
  212.     AVar[2] := 238; AVar[3] := 1;
  213.     AVar[4] := 238; AVar[5] := 78;
  214.     AVar[6] := 1; AVar[7] := 78;
  215.     AVar[8] := 1; AVar[9] := 1;
  216.     WITH GadgetBorder^ DO
  217.       LeftEdge := 0; TopEdge := 0;
  218.       FrontPen := BYTE(1); BackPen := BYTE(2);
  219.       DrawMode := BYTE(DrawingModeSet{Jam2}); Count := BYTE(5);
  220.       XY := ADR(GVar);
  221.       NextBorder := NULL;
  222.     END;
  223.     WITH AuthorBorder^ DO
  224.       LeftEdge := 0; TopEdge := 0;
  225.       FrontPen := BYTE(3); BackPen := BYTE(2);
  226.       DrawMode := BYTE(DrawingModeSet{Jam2}); Count := BYTE(5);
  227.       XY := ADR(AVar);
  228.       NextBorder := NULL;
  229.     END;
  230.     AText[0] := "Automata V1.0  by Mike Dryja";
  231.     AText[1] := "(C) 1987  A MAD-Ware Product";
  232.     AText[2] := " Free to copy, not to sell!";
  233.     FOR I := 2 TO 0 BY -1 DO
  234.       NEW(AuthorText[I]);
  235.       WITH AuthorText[I]^ DO
  236.         LeftEdge := 8;
  237.     FrontPen := BYTE(3); BackPen := BYTE(2);
  238.     DrawMode := BYTE(DrawingModeSet{Jam2});
  239.     ITextFont := NULL; IText := ADR(AText[I]);
  240.     IF I<2 THEN
  241.       NextText := AuthorText[I+1]
  242.     ELSE
  243.       NextText := NULL
  244.     END;
  245.       END;
  246.     END;
  247.     AuthorText[0]^.TopEdge := 5; AuthorText[1]^.TopEdge := 25;
  248.     AuthorText[2]^.TopEdge := 35;
  249.     WITH AuthorReq^ DO
  250.       OlderRequest := NULL;
  251.       LeftEdge := 20;
  252.       TopEdge := 20;
  253.       Width := 240; Height := 80;
  254.       RelLeft := 0; RelTop := 0;
  255.       ReqGadget := AuthorGadg;
  256.       ReqText := AuthorText[0];
  257.       Flags := RequesterFlagSet{};
  258.       BackFill := BYTE(2);
  259.       ReqBorder := AuthorBorder;
  260.     END;
  261.   END InitGadg2;
  262.  
  263. PROCEDURE PrepareScreen() : BOOLEAN;
  264.   BEGIN
  265.     IntuitionBase := OpenLibrary (IntuitionName,0);
  266.     IF IntuitionBase # 0 THEN
  267.       AMScreen := InitScreen(AMNewS);
  268.       AMWindow := InitWindow1(AMNewW1, AMScreen);
  269.       GraphicsBase := OpenLibrary (GraphicsName,0);
  270.       IF GraphicsBase # 0 THEN
  271.         SetColors(AMScreen);
  272.         InitGadg1();
  273.     InitGadg2();
  274.     RETURN TRUE;
  275.       ELSE
  276.         RETURN FALSE
  277.       END;
  278.     ELSE
  279.       RETURN FALSE
  280.     END;
  281.   END PrepareScreen;
  282.  
  283. PROCEDURE CloseSetUp ();
  284.   BEGIN
  285.     CloseWindow (AMWindow^);
  286.     CloseScreen (AMScreen^);    
  287.     CloseLibrary (IntuitionBase);
  288.   END CloseSetUp;
  289.     
  290. END AMSetUp.
  291.  
  292.             
  293.  
  294.